package com.blacktech.dbu.core.util;

import com.blacktech.dbu.core.dict.ColumnType;
import com.blacktech.dbu.core.dict.DatabaseDialect;

/**
 * DDL模板工具类
 * 提供在FreeMarker模板中使用的工具方法
 *
 * @author yanyunsong
 */
public class DDLTemplateUtil {
    
    // 添加无参构造函数，以便FreeMarker可以实例化这个类
    public DDLTemplateUtil() {
    }
    
    /**
     * 获取字段类型在指定数据库方言下的映射
     * @param columnType 字段类型
     * @param dialect 数据库方言
     * @return 数据库中的具体类型
     */
    public static String getDbTypeForColumn(ColumnType columnType, DatabaseDialect dialect) {
        if (columnType == null || dialect == null) {
            return "VARCHAR";
        }
        return columnType.getTypeForDialect(dialect);
    }
    
    /**
     * 获取字段类型在指定数据库方言下的映射（字符串版本）
     * @param columnTypeStr 字段类型字符串
     * @param dialectStr 数据库方言字符串
     * @return 数据库中的具体类型
     */
    public static String getDbTypeForColumn(String columnTypeStr, String dialectStr) {
        try {
            ColumnType columnType = ColumnType.valueOf(columnTypeStr.toUpperCase());
            DatabaseDialect dialect = DatabaseDialect.valueOf(dialectStr);
            return getDbTypeForColumn(columnType, dialect);
        } catch (Exception e) {
            return columnTypeStr;
        }
    }
}